package main
import "fmt"
type Person struct {
	name string
	age int
	gender string
}

func main() {
	// p1是一个指针
	var p1 = new(Person)						
	p1.name = "zhangsan"
	p1.age = 18
	p1.gender = "male"
	// 可以看到，通过new初始化的结构体，它返回的是一个指针，所以，p1的类型是*Person
	fmt.Printf("p1的值是：%#v，p1的类型是：%T\n", p1, p1)
	// 但是与普通指针不同的是，结构体指针仍然可以通过p1.name来获取值，而不需要(*p1).name
	fmt.Printf("p1.name的值是：%v\n", p1.name)
	// 当然，想用(*p1).name来获取，也是可以的
	fmt.Printf("通过(*p1).name同样可以获取：%v", (*p1).name)

}